package com.oa.user.service;

import java.io.IOException;
import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;

import com.oa.system.entity.UserInfo;
import com.oa.user.dto.UserInfoDto;

public interface UserManagerService {

	/*
	 * 通过部门ID查找用户信息
	 * @param deptId 部门ID
	 * @return List<UserInfoDto> 用户信息的dto列表
	 */
	List<UserInfoDto> findByDeptId(Long deptId);

	/*
	 * 删除单个用户
	 * @param id 用户ID
	 * @return boolean 是否删除成功
	 */
	boolean deleteUser(Long id);

	/*
	 * 删除多个用户
	 * @param ids 用户ID列表
	 * @return boolean 是否删除成功
	 */
	boolean deleteUser(List<Long> ids);

	/*
	 * 通过用户ID获取用户信息
	 * @param id 用户ID
	 * @return UserInfoDto 用户信息
	 */
	UserInfoDto getUserInfo(Long id);

	/*
	 * 通过用户姓名获取用户信息
	 * @param name 用户姓名
	 * @return UserInfo 用户信息
	 */
	UserInfo getUserInfo(String name);

	/*
	 * 通过查询参数返回分页的用户信息
	 * @param userInfoDto 用户信息的查询参数
	 * @param pageable 分页信息
	 * @return Page<UserInfoDto> 用户信息分页列表
	 */
	Page<UserInfoDto> getUserInfoByQuery(UserInfoDto userInfoDto, Pageable pageable);

	/*
	 * 获取分页的用户信息
	 * @param pageable 分页信息
	 * @return Page<UserInfo> 用户信息分页列表
	 */
	Page<UserInfo> getAllUserInfo(Pageable pageable);

	/*
	 * 上传头像
	 * @param multipartFile 上传的头像图片
	 */
	void saveUserCover(MultipartFile multipartFile)
			throws IllegalStateException, IOException;

	/*
	 * 更新用户信息
	 * @param ids 用户ID列表
	 * @return boolean 是否删除成功
	 */
	boolean updateUserInfo(UserInfoDto userInfoDto);

}
